package com.example.shardingjdbc.dao;

import com.example.shardingjdbc.model.po.OrderDto;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


/**
 * @Description: 订单mapper
 * @Author: Jerry
 * @Date: 2021-07-14 22:00
 */
@Mapper
@Repository
public interface OrderMapper {
    /**
     * 根据订单id查询订单信息
     * @param id 订单id
     * @return 订单信息
     */
    OrderDto getOrderById(Long id);

    /**
     * 插入订单信息
     * @param orderDto 订单信息
     */
    void addOrder(OrderDto orderDto);

    /**
     * 根据订单id列表查询订单列表
     * @param orderIds 单id列表
     * @return 订单列表
     */
    List<OrderDto> getOrdersByIds(List<Long> orderIds);

    /**
     * 根据订单区间获取订单信息
     * @param orderIdMap 订单左右两个区间值组成的map
     * @return 订单信息
     */
    List<OrderDto> getOrdersByRange(Map<String, Long> orderIdMap);

    /**
     * 复合分片算法查询订单记录
     * @param orderDto 查询条件
     * @return 订单记录列表
     */
    List<OrderDto> getOrdersComplex(OrderDto orderDto);
}
